# Python面向对象的继承指的是多个类之间的所属关系，即子类默认继承父类的所有属性和函数。
# 在Python中，所有类默认继承object类，object类是顶级类或基类；

class Animal():
    name='动物'
    def __init__(self):
        self.name=Animal.name

    def say(self):
        print('动物的叫喊')

class Dog(Animal):
    def __init__(self):
        super().__init__()
    def say(self):
        print('狗的喊叫')
    def seek(self):
        print('狗可以看家')
print('*'*40)
animal = Animal()
animal.say()

print('*'*40)
dog1 = Animal()
dog1.say()

print('*'*40)
dog = Dog()
dog.say()
dog.seek()
print('*'*40)

print(type(dog)) # 输出 <class '__main__.Dog'>
print(type(dog1))# 输出 <class '__main__.Animal'>
print(type(animal))# 输出 <class '__main__.Animal'>

# isinstance 判断对象，是否是某个类型

print(isinstance(dog, Dog))
print(isinstance(dog, Animal))

# issubclass 判断类 ，是否是是某个父类的子类
print(issubclass(Dog, Animal))
print(issubclass(Animal, Dog))
print(issubclass(Dog, object))